<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script>
/*
类型转化：js中6大数据类型：同类型可以运算，不同类型之间(转换之后)能运算

动态类型：类型在操作的过程中会进行转换，转换成相同的类型进行运算
    number
    string
    boolean
    undefined
    null
    object

转换方法：
任何类型转 字符串 toString()

    数字转字符串：直接加""

    布尔类型转字符串：
    true => "true"
    false => "false"

    undefined => "undefined"

    null => "null"

    对象转字符串：
        使用位置：
            1.有字符串参与的加法运算
        普通对象：
            一般情况:"[object Object]"
            特殊情况:调用对象的toString方法，使用返回值作为转换结果

        数组：
            去掉中括号，左右两边加引号

        函数：
            直接左右两边加引号


任何类型转 数值 Number() 一定会返回一个数值 如果不合理 就会返回NaN

    字符串转数值:
        看上去像数值，就可以转数值
        不像的就没法转

        parseInt:从首位开始选取整数部分，如果首位不是则不能转
        console.log(parseInt("1.2.3"))//返回数字1
        console.log(parseInt("6个苹果"))//返回数字6

        parseFloat:从首位开始选取包含小数部分，同上
        console.log(parseFloat("1.2.3"))//返回数值1.2

        布尔类型转数值：
            true => 1
            false => 0

        undefined => NaN //未定义就是没有初始值，就肯定不是一个数值

        null => 0 // null是一个空对象 这个对象定义过 指向了最原始的空间 起始点 所以是0

        对象转数值 一般情况就是NaN



任何类型转 布尔(在if for while 中的判断语句里面)
    true: 其余都是为true

    false:"" 0 NaN undefined null false

    Boolean() 传入你想要转成布尔类型的值 就能转布尔类型

    !表达式 运算符：取反 即转成布尔类型 取反
    !(!表达式) 表达式直接转成布尔类型

    判断相等：
        ==：允许类型转换之后判断
        ===：不允许类型转换之后判断(最优先的使用方法)

        !=:不等(允许类型转换)
        !==:不全等(不允许类型转换)


*/
 
//let o = 0

//if(o){
//    console.log("true zhixing")
//}else{
//    console.log("false zhixing")
//}

let arr = [1,2,3]

while(arr.length){
    let s = arr.pop()//从数组中删除最后一个 返回被删除的那个 赋值给s
    console.log(s)
}

</script>  
</body>
</html>